cmake_minimum_required(VERSION 3.5)
project(upperMain LANGUAGES CXX)

# 设置Qt路径（根据实际安装路径调整）
set(CMAKE_PREFIX_PATH "/opt/Qt5.12.9/5.12.9/gcc_64")

# 启用Qt自动处理工具
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)    # 自动处理.ui文件
set(CMAKE_AUTOMOC ON)    # 自动处理Q_OBJECT宏（关键）
set(CMAKE_AUTORCC ON)    # 自动处理.qrc资源文件

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找Qt组件（确保包含所有用到的模块）
find_package(Qt5 COMPONENTS 
    Core 
    Widgets 
    Mqtt 
    Network  # 可能用到的网络模块（MQTT依赖）
    Svg      # 新增：SVG模块支持
REQUIRED)

# 明确指定源文件和头文件（避免aux_source_directory的潜在问题）
set(SOURCES
    src/MqttHandler.cpp
    src/commandcontroller.cpp
    src/upperMain.cpp
    main.cpp  # 根目录的main.cpp
    resources.qrc  # 新增：添加.qrc文件路径
)

set(HEADERS
    include/MqttHandler.h    # 包含Q_OBJECT的头文件
    include/commandcontroller.h  # 包含Q_OBJECT的头文件
    include/upperMain.h
)

# 添加可执行目标
add_executable(${PROJECT_NAME}
    ${SOURCES}
    ${HEADERS}  # 显式添加头文件，确保moc能找到并处理Q_OBJECT
)

# 链接Qt库
target_link_libraries(${PROJECT_NAME} PRIVATE
    Qt5::Core
    Qt5::Widgets
    Qt5::Mqtt
    Qt5::Network
    Qt5::Svg   # 新增：链接SVG库
)

# 针对MSVC的UTF-8编码设置（其他编译器无需）
if(MSVC)
    target_compile_options(${PROJECT_NAME} PRIVATE "/utf-8")
endif()